home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / IEFDIV.SA < prev    next >
Text File  |  1989-08-30  |  5KB  |  101 lines

  1.        TTL     IEEE FORMAT EQUIVALENT DIVIDE (IEFDIV)
  2. ***************************************
  3. * (C) COPYRIGHT 1981 BY MOTOROLA INC. *
  4. ***************************************
  5.  
  6. *************************************************************
  7. *                        IEFDIV                             *
  8. *     FAST FLOATING POINT IEEE FORMAT EQUIVALENT DIVIDE     *
  9. *                                                           *
  10. *  INPUT:  D6 - IEEE FORMAT NUMBER DIVISOR (SOURCE)         *
  11. *          D7 - IEEE FORMAT NUMBER DIVIDEND (DESTINATION)   *
  12. *                                                           *
  13. *  OUTPUT: D7 - IEEE FORMAT FLOATING RESULT OF REGISTER D6  *
  14. *               DIVIDED INTO REGISTER D7                    *
  15. *                                                           *
  16. *  CONDITION CODES:                                         *
  17. *          N - RESULT IS NEGATIVE                           *
  18. *          Z - RESULT IS ZERO                               *
  19. *          V - RESULT IS NAN (NOT-A-NUMBER)                 *
  20. *          C - UNDEFINED                                    *
  21. *          X - UNDEFINED                                    *
  22. *                                                           *
  23. *               ALL REGISTERS TRANSPARENT                   *
  24. *                                                           *
  25. *            MAXIMUM STACK USAGE:  24 BYTES                 *
  26. *                                                           *
  27. *  RESULT MATRIX:              ARG 2                        *
  28. *                  OTHERS    ZERO    INFINITY      NAN      *
  29. *     ARG 1      ****************************************   *
  30. *   OTHERS       *   A    *    B    *    C     *    F   *   *
  31. *   ZERO         *   C    *    D    *    C     *    F   *   *
  32. *   INFINITY     *   B    *    B    *    D     *    F   *   *
  33. *   NAN          *   E    *    E    *    E     *    F   *   *
  34. *                ****************************************   *
  35. *       A = RETURN DIVIDE RESULT, OVERFLOWING TO INFINITY,  *
  36. *           UNDERFLOWING TO ZERO WITH PROPER SIGN           *
  37. *       B = RETURN ZERO WITH PROPER SIGN                    *
  38. *       C = RETURN INFINITY WITH PROPER SIGN                *
  39. *       D = RETURN NEWLY CREATED NAN (NOT-A-NUMBER)         *
  40. *       E = RETURN ARG1 (NAN) UNCHANGED                     *
  41. *       F = RETURN ARG2 (NAN) UNCHANGED                     *
  42. *                                                           *
  43. *  NOTES:                                                   *
  44. *    1) SEE THE MC68344 USER'S GUIDE FOR A DESCRIPTION OF   *
  45. *       THE POSSIBLE DIFFERENCES BETWEEN THE RESULTS        *
  46. *       RETURNED HERE VERSUS THOSE REQUIRED BY THE          *
  47. *       IEEE STANDARD.                                      *
  48. *                                                           *
  49. *************************************************************
  50.          PAGE
  51. IEFDIV IDNT    1,1  IEEE FORMAT EQUIVALENT DIVIDE
  52.  
  53.          OPT       PCS
  54.  
  55.          XDEF      IEFDIV    IEEE FORMAT EQUIVALENT DIVIDE
  56.  
  57.          XREF      9:IEFDOP  DOUBLE ARGUMENT CONVERSION ROUTINE
  58.          XREF      9:IEFRTNAN CREATE AND RETURN NAN RESULT ROUTINE
  59.          XREF      9:IEFTIEEE RETURN AND CONVERT BACK TO IEEE FORMAT
  60.          XREF      9:IEFRTSZE RETURN SIGNED ZERO WITH EXCLUSIVE OR SIGNS
  61.          XREF      9:IEFRTIE  RETURN INFINITY WITH EXCLUSIVE OR SIGNS
  62.          XREF      9:FFPDIV    REFERENCE FAST FLOATING POINT DIVIDE ROUTINE
  63.        XREF    FFPCPYRT        COPYRIGHT NOTICE
  64.  
  65.          SECTION  9
  66.  
  67. **********************
  68. * DIVIDE ENTRY POINT *
  69. **********************
  70. IEFDIV   BSR       IEFDOP    DECODE BOTH OPERANDS
  71.          BRA.S     IEFNRM    +0 BRANCH NORMALIZED
  72.          BRA.S     IEFRTINF  +2 BRANCH ARG2 INFINITY
  73.          BRA.S     IEFRTZRO  +4 BRANCH ARG1 INFINITY
  74. * BOTH ARE INFINITY - RETURN A NAN      +6 BOTH ARE INFINITY
  75.          BRA       IEFRTNAN  RETURN A NAN FOR INFINITY INTO INFINITY
  76.  
  77. * ARG1 INFINITY - RETURN ZERO WITH PROPER SIGN
  78. IEFRTZRO BRA       IEFRTSZE  RETURN ZERO WITH EXCLUSIVE OR'ED SIGN
  79.  
  80. * ARG2 INFINITY BUT NOT ARG1 - RETURN INFINITY WITH PROPER SIGN
  81. IEFRTINF BRA       IEFRTIE   RETURN INFINITY WITH EXCLUSIVE OR'ED SIGN
  82.  
  83. * NORMALIZED NUMBERS - TEST FOR ZEROES
  84. IEFNRM   TST.L     D7        ? DIVIDEND ZERO (ARG2)
  85.          BNE.S     IEF2NZ    NO, GO TEST DIVISOR FOR ZERO
  86.          TST.L     D6        ? ARE BOTH ZERO
  87.          BNE.S     IEFRTZRO  NO, JUST DIVIDEND - RETURN A ZERO
  88.          BRA       IEFRTNAN  RETURN A NAN FOR ZERO INTO ZERO
  89.  
  90. * DIVIDEND (ARG2) NOT ZERO
  91. IEF2NZ   TST.L     D6        ? DIVISOR ZERO (ARG1) BUT NOT DIVIDEND (ARG2)
  92.          BEQ.S     IEFRTINF  YES, RETURN INFINITY WITH PROPER SIGN
  93.  
  94. * BOTH ARGUMENTS NON ZERO AND NORMALIZED - DO THE DIVIDE
  95.          BSR       FFPDIV    DO FAST FLOATING POINT DIVIDE
  96.          BEQ       IEFRTZRO  IF RESULT IS ZERO RETURN A PROPER SIGN ZERO
  97.          BRA       IEFTIEEE  CONVERT RESULT BACK TO IEEE FORMAT
  98.  
  99.          END
  100.  
  101.